package com.tvunetworks.center.device.service;

import com.tvunetworks.center.device.model.CustomizedTShareAccount;
import com.tvunetworks.center.device.model.param.CustomizedShareParam;
import com.tvunetworks.center.device.model.vo.CustomizedShareVo;

import java.util.List;
/**
 * @program: tvucc-instance
 * @author lebronchen
 * @create: 2019-02-28 16:53
 **/
public interface CustomizedShareService {
    /**
     * 开始分享
     * @param userId userId
     * @param rid rid
     * @param shareId shareId
     */
    void startShare(String userId, String rid, String shareId);

    /**
     * 停止分享
     * @param userId userId
     * @param rid rid
     * @param shareId shareId
     */
    void stopShare(String userId, String rid, String shareId);

    /**
     * 定制化CC，T 直播的时候，自动推流到指定推流地址
     * @param userId userId
     * @param rid  rid
     * @param sid sid
     */
    void tAutoShareFixedAddress(String userId, String rid, String sid);

    /**
     * 定制化CC，自动创建推流账号，在 T 直播的时候会自动创建推流账号
     * 并且去推流
     * @param userId userId
     * @param peerId peerId
     * @return    CustomizedTShareAccount
     */
    CustomizedTShareAccount createAutoShareAccount(String userId, String peerId);

    /**
     * StopLive 的时候结束所有的推流
     * @param userId userId
     * @param rid rid
     * @param sid sid
     */
    void stopAllShare(String userId, String rid, String sid);

    /**
     * 查询推流账号 包含定制化 CC 产生的固定推流地址
     * @param userId userId
     * @param param param
     * @return List
     */
    List<CustomizedShareVo> listShareAccount(String userId, CustomizedShareParam param);
}
